package com.duobaoyu.dby.supply.db.entity.message;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 系统操作日志表
 *
 * @author LY
 * @email 249007302@qq.com
 * @date 2022-06-08 16:11:11
 */

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Document("sc_system_log")
@ApiModel(value = "系统操作日志表")
@TableName(value = "sc_system_log")
public class SystemLog implements Serializable {

	private static final long serialVersionUID = -2978828667827398548L;
	/**
	 * 主键ID
	 */
	@TableId(type = IdType.INPUT)
	private String id;
	/**
	 * 请求ID
	 */
	@Field("request_id")
	@ApiModelProperty(value = "请求ID")
	private String requestId;
	/**
	 * 唯一键
	 */
	@Field("unique_key")
	@ApiModelProperty(value = "唯一键")
	private String uniqueKey;
	/**
	 * 操作人员ID
	 */
	@Field("operation_id")
	@ApiModelProperty(value = "操作人员ID")
	private Long operationId;
	/**
	 * 操作人员名称
	 */
	@Field("operation_name")
	@ApiModelProperty(value = "操作人员名称")
	private String operationName;
	/**
	 * 部门ID
	 */
	@Field("dept_id")
	@ApiModelProperty(value = "部门ID")
	private Long deptId;
	/**
	 *部门名称
	 */
	@Field("dept_name")
	@ApiModelProperty(value = "部门名称")
	private String deptName;
	/**
	 * 管理员地址
	 */
	@Field("ip")
	@ApiModelProperty(value = "管理员地址")
	private String ip;
	/**
	 * 操作类型
	 */
	@Field("operation_type")
	@ApiModelProperty(value = "操作类型")
	private String operationType;
	/**
	 * 请求类型
	 */
	@Field("type")
	@ApiModelProperty(value = "请求类型")
	private String type;
	/**
	 * 日志标题
	 */
	@Field("title")
	@ApiModelProperty(value = "日志标题")
	private String title;
	/**
	 * 请求URI
	 */
	@Field("request_uri")
	@ApiModelProperty(value = "请求URI")
	private String requestUri;
	/**
	 * 操作方式
	 */
	@Field("http_method")
	@ApiModelProperty(value = "操作方式")
	private String httpMethod;
	/**
	 * 请求类型.方法
	 */
	@Field("class_method")
	@ApiModelProperty(value = "请求类型.方法")
	private String classMethod;
	/**
	 * 操作提交的数据（入参）
	 */
	@Field("params")
	@ApiModelProperty(value = "操作提交的数据（入参）")
	private String params;
	/**
	 * 返回内容（出参）
	 */
	@Field("response")
	@ApiModelProperty(value = "返回内容（出参）")
	private String response;
	/**
	 * 方法执行时间(毫秒)
	 */
	@Field("use_time")
	@ApiModelProperty(value = "方法执行时间(毫秒)")
	private Long useTime;
	/**
	 * 浏览器信息
	 */
	@Field("browser")
	@ApiModelProperty(value = "浏览器信息")
	private String browser;
	/**
	 * 地区
	 */
	@Field("area")
	@ApiModelProperty(value = "地区")
	private String area;
	/**
	 * 省
	 */
	@Field("province")
	@ApiModelProperty(value = "省")
	private String province;
	/**
	 * 市
	 */
	@Field("city")
	@ApiModelProperty(value = "市")
	private String city;
	/**
	 * 网络服务提供商
	 */
	@Field("isp")
	@ApiModelProperty(value = "网络服务提供商")
	private String isp;
	/**
	 * 异常信息
	 */
	@Field("exception")
	@ApiModelProperty(value = "异常信息")
	private String exception;
	/**
	 * 版本号-用作乐观锁
	 */
	@ApiModelProperty(value = "版本号-用作乐观锁")
	@Version
	@Field("version")
	private Integer version;
	/**
	 * 是否删除 0-否 1-是
	 */
	@Field("del_flag")
	@ApiModelProperty(value = "是否删除 0-否 1-是")
	@TableLogic(value = "0",delval = "1")
	private Integer delFlag;

	@Field("create_by")
	@TableField(fill = FieldFill.INSERT)
	private String createBy;

	@Field("create_time")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@TableField(fill = FieldFill.INSERT)
	private LocalDateTime createTime;

	@Field("update_by")
	@TableField(fill = FieldFill.INSERT_UPDATE)
	private String updateBy;

	@Field("update_time")
	//@JsonDeserialize(using = LocalDateTimeDeserializer.class)
	//@JsonSerialize(using = LocalDateTimeSerializer.class)
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@TableField(fill = FieldFill.INSERT_UPDATE)
	private LocalDateTime updateTime;
}
